package service;

import java.util.ArrayList;
import java.util.List;

import modelo.AperturaMesaDao;
import modelo.SucursalDao;
import beans.*;
import entities.*;

public class SucursalSrv {
	
	private static SucursalSrv instancia = null;
	
	public static SucursalSrv getInstancia()
	{
		if(instancia == null) {
			instancia = new SucursalSrv();
		}
		return instancia;
	}
	
	/**
	 * 
	 * @param sucursal
	 * @return
	 */
	public SucursalEntity bean2Entity(SucursalBean sucursal) {
		SucursalEntity entity = new SucursalEntity();
		
		entity.setId(sucursal.getId());
		entity.setNombre(sucursal.getNombre());
		
		AreaEntity cafeteriaEntity = AreaSrv.getInstancia().bean2Entity(sucursal.getCafeteria());
		entity.setCafeteria(cafeteriaEntity);
		
		AreaEntity barraEntity = AreaSrv.getInstancia().bean2Entity(sucursal.getBarra());
		entity.setBarra(barraEntity);
		
		AreaEntity cocinaEntity = AreaSrv.getInstancia().bean2Entity(sucursal.getCocina());
		entity.setCocina(cocinaEntity);
		
		DepositoEntity depositoEntity = DepositoSrv.getInstancia().bean2Entity(sucursal.getDeposito());
		entity.setDepositoLocal(depositoEntity);
		
		SalonEntity salonEntity = SalonSrv.getInstancia().bean2Entity(sucursal.getSalon());
		entity.setSalon(salonEntity);
		
		CajaEntity cajaEntity = CajaSrv.getInstancia().bean2Entity(sucursal.getCaja());
		entity.setCaja(cajaEntity);
		
		CartaEntity cartaEntity = CartaSrv.getInstancia().bean2Entity(sucursal.getCarta());
		entity.setCarta(cartaEntity);
		
		List<PersonalEntity> personasEntity = new ArrayList<PersonalEntity>();
		for (PersonalBean personalBean: sucursal.getPersonas()) {
			PersonalEntity personaEntity = PersonalSrv.getInstancia().bean2Entity(personalBean);
			personasEntity.add(personaEntity);
		}
		entity.setPersonas(personasEntity);
		
		List<AperturaMesaEntity> aperturasMesaEntity = new ArrayList<AperturaMesaEntity>();
		for (AperturaMesaBean aperturaMesaBean: sucursal.getAperturaMesa()) {
			AperturaMesaEntity aperturaMesaEntity = AperturaMesaSrv.getInstancia().bean2Entity(aperturaMesaBean);
			aperturasMesaEntity.add(aperturaMesaEntity);
		}
		entity.setAperturasMesas(aperturasMesaEntity);
		
		return entity;
	}
	
	/**
	 * 
	 * @param sucursal
	 * @return
	 */
	public SucursalBean Entity2Bean(SucursalEntity sucursal) {
		SucursalBean bean = new SucursalBean();
		
		bean.setId(sucursal.getId());
		bean.setNombre(sucursal.getNombre());
		
		AreaBean cafeteriaBean = AreaSrv.getInstancia().entity2Bean(sucursal.getCafeteria());
		bean.setCafeteria(cafeteriaBean);
		
		AreaBean barraBean = AreaSrv.getInstancia().entity2Bean(sucursal.getBarra());
		bean.setBarra(barraBean);
		
		AreaBean cocinaBean = AreaSrv.getInstancia().entity2Bean(sucursal.getCocina());
		bean.setCocina(cocinaBean);
		
		DepositoBean depositoBean = DepositoSrv.getInstancia().entity2Bean(sucursal.getDepositoLocal());
		bean.setDeposito(depositoBean);
		
		SalonBean salonBean = SalonSrv.getInstancia().Entity2Bean(sucursal.getSalon());
		bean.setSalon(salonBean);
		
		CajaBean cajaBean = CajaSrv.getInstancia().entity2Bean(sucursal.getCaja());
		bean.setCaja(cajaBean);
		
		CartaBean cartaBean = CartaSrv.getInstancia().entity2Bean(sucursal.getCarta());
		bean.setCarta(cartaBean);
		
		List<PersonalBean> personasBean = new ArrayList<PersonalBean>();
		for (PersonalEntity personalEntity: sucursal.getPersonas()) {
			PersonalBean personaBean = PersonalSrv.getInstancia().entity2Bean(personalEntity);
			personasBean.add(personaBean);
		}
		bean.setPersonas(personasBean);
		
		List<AperturaMesaBean> aperturasMesaBean = new ArrayList<AperturaMesaBean>();
		for (AperturaMesaEntity aperturaMesaEntity: sucursal.getAperturasMesas()) {
			AperturaMesaBean aperturaMesaBean = AperturaMesaSrv.getInstancia().entity2Bean(aperturaMesaEntity);
			aperturasMesaBean.add(aperturaMesaBean);
		}
		bean.setAperturaMesa(aperturasMesaBean);

		return bean;
	}
	
	
//	public SucursalBean obtenerSucursal(Integer sucursalId)
//	{
//		SucursalEntity entity = SucursalDao.getInstancia().obtenerSucursal(sucursalId);
//		SucursalBean sucursal = new SucursalBean();
//		
//		sucursal.setBarra(AreaSrv.getInstancia().entity2Bean(entity.getBarra()));
//		sucursal.setCafeteria(AreaSrv.getInstancia().entity2Bean(entity.getCafeteria()));
//		sucursal.setCaja(CajaSrv.getInstancia().entity2Bean(entity.getCaja()));
//		sucursal.setCarta(CartaSrv.getInstancia().Entity2Bean(entity.getCarta()));
//		sucursal.setCocina(AreaSrv.getInstancia().entity2Bean(entity.getCocina()));
//		sucursal.setDeposito(DepositoSrv.getInstancia().entity2Bean(entity.getDepositoLocal()));
//		sucursal.setNombre(entity.getNombre());
//		sucursal.setSalon(SalonSrv.getInstancia().Entity2Bean(entity.getSalon()));
//		
//		List<PersonalBean> usuarios = new ArrayList<PersonalBean>();
//		for (PersonalEntity personalEntity : entity.getPersonas() ) {
//			PersonalBean personal = PersonalSrv.getInstancia().entity2Bean(personalEntity);
//			usuarios.add(personal);
//		}
//		
//		return sucursal;	
//	}
	
	
	
	public SucursalBean obtenerSucursal(Integer sucursalId)
	{
		System.out.println("entrando al Service Sucursal. \n");
		SucursalEntity entity = SucursalDao.getInstancia().obtenerSucursal(sucursalId);
		
		SucursalBean sucursal = SucursalSrv.getInstancia().Entity2Bean(entity);
		
		return sucursal;	
	}

	public boolean guardarSucursal(SucursalBean sucursal) {
		SucursalEntity sucursalEntity = this.bean2Entity(sucursal);
		return SucursalDao.getInstancia().merge(sucursalEntity);
		
	}
	
}
